//有效的回旋镖
/*给定一个数组 points ，其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点，如果这些点构成一个 回旋镖 则返回 true 。

回旋镖 定义为一组三个点，这些点 各不相同 且 不在一条直线上 。*/
class Solution {
public:
    bool isBoomerang(vector<vector<int>>& points) {
        if (points[0][0] == points[1][0] && points[0][1] == points[1][1])
            return false;
        if (points[2][0] == points[1][0] && points[2][1] == points[1][1])
            return false;
        if (points[0][0] == points[2][0] && points[0][1] == points[2][1])
            return false;
        if (points[0][0] == points[1][0] && points[2][0] == points[1][0])
            return false;
        else if (points[0][0] != points[1][0] && points[2][0] == points[1][0])
            return true;
        else if (points[0][0] == points[1][0] && points[2][0] != points[1][0])
            return true;
        double k =
            (points[0][1] - points[1][1]) * 1.0 / (points[0][0] - points[1][0]);
        double c = points[0][1] - k * points[0][0];
        if (fabs(points[2][1] * 1.0 - (points[2][0] * k + c)) <= 1e-7)
            return false;
        return true;
    }
};


// 找到最接近 0 的数字
/*给你一个长度为 n 的整数数组 nums ，请你返回 nums 中最 接近 0 的数字。如果有多个答案，请你返回它们中的 最大值 。*/
class Solution {
public:
    int findClosestNumber(vector<int>& nums) {
        int floag = 0;
        int sum = INT_MAX;
        for (auto& num : nums) {
            int temp = abs(num);
            if (sum > temp) {
                sum = temp;
                if (num >= 0)
                    floag = 0;
                else
                    floag = 1;
            } else if (sum == temp) {
                if (num > 0)
                    floag = 0;
            }
        }
        if (floag)
            return -sum;
        return sum;
    }
};